#ifndef _LINKEDQUEUE_
#define _LINKEDQUEUE_

#define Status int
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int ElemType;

// 定义结点
typedef struct Node {
    ElemType data;
    struct Node *next;
} Node, *NodePtr;

// 定义链队列
typedef struct {
    // 头结点, 队头
    Node *front;
    // 尾指针, 队尾
    Node *rear;
} LinkedQueue;

// 初始化
Status InitQueue(LinkedQueue *queue);

// 销毁
Status DestroyQueue(LinkedQueue *queue);

// 置空
Status MakeEmptyQueue(LinkedQueue *queue);

// 入队
Status EnQueue(LinkedQueue *queue, ElemType e);

// 出队
Status DeQueue(LinkedQueue *queue, ElemType *e);

// 取队头元素
ElemType GetHead(LinkedQueue queue);

#endif